import com.alibaba.fastjson.JSON;
import org.apache.commons.collections4.map.LinkedMap;

import java.math.BigDecimal;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;

/**
 * @author CHL
 * @ClassName: Test2
 * @Description: TODO
 * @date 2023/1/13 16:34
 * @Version 1.0
 */
public class Test2 {

    public static void main(String[] args) {
//        test();
//        test1();
//        test2();
//        test3();

        BigDecimal two = new BigDecimal("2");
        BigDecimal one = new BigDecimal("2");
        BigDecimal bigDecimal = one.add(new BigDecimal("100")).divide(two,2,4);

        System.out.println(bigDecimal); // = 3
//        System.out.println(one.add(two)); // = 3
//        System.out.println(one.divide(two).add(two)); //  = 2.5
//        System.out.println(one.divide(two).add(two).multiply(two)); //  = 5.0
//        System.out.println(one.divide(two).add(two).multiply(two).divide(new BigDecimal("3"), 2, BigDecimal.ROUND_DOWN)); // = 1.66


    }

    private static void test4() {

    }

    private static void test3() {

    }


    private static void test2() {
        Scanner sc = new Scanner(System.in);
        int times = 0;
        int num = sc.nextInt();
        int flower = sc.nextInt();
        for (int i = 1; i < num * flower + 1; i++) {
            if (i % 2 != 0) {
                times = times + 1;
            }
        }
        System.out.println("数量" + times);
    }

    /*
     * 不死神兔
     * */
    private static void test1() {
        /**
         * 有一对兔子，从出生后第3个月起每个月都生一对兔子，小兔子长到第三个月后每个月又生一对兔子，
         * 假如兔子都不死，问 第二十个月的兔子对数为多少对？
         * 分析： 第一个月 2 。。。。。。2
         *      第二个月  2。。。。。。。2
         *      第三个月  4。。。。。。。1
         *      第四个月  6。。。。。。。2
         *      第五个月  10
         *          6 16   7 26   8 42   9 68   10 110   11 178  12 288
         */
        int[] arr = new int[20];
        arr[0] = 1;
        arr[1] = 1;

        int count = 0;
        for (int i = 2; i < arr.length; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
//            System.out.println(i + "次，" + arr[i] + "对");
            count = arr[i];
        }
        System.out.println("普通解法兔子对数:" + count);
        System.out.println("递归解法兔子对数:" + digui(20));

    }

    /*
     * 求1000以内的公因数之和，因数为能被整除的数
     * */
    private static void test() {
        HashSet<Integer> map = new HashSet<>();
        for (int i = 1; i <= 100; i++) {
            for (int j = 1; j < i; j++) {
                if (i % j == 0) {
//                    System.out.println(i + "的公因数为:" + j);
                    map.add(j);
                }
            }
        }
        Integer integer = map.stream().reduce(Integer::sum).orElse(0);
        System.out.println(" 公因数集合为:" + JSON.toJSONString(map));
        System.out.println("公因数求和:" + integer);
    }


    public static int digui(int i) {
        if (i == 1 || i == 2) {
            return 1;
        } else {
            return digui(i - 1) + digui(i - 2);
        }
    }


}
